草庐IT

c++ - Cython、C++ 和 gsl

全部标签

python - Cython 中的复数

在Cython中处理复数的正确方法是什么?我想使用dtypenp.complex128的numpy.ndarray编写一个纯C循环。在Cython中,关联的C类型定义在Cython/Includes/numpy/__init__.pxd作为ctypedefdoublecomplexcomplex128_t所以看起来这只是一个简单的C双复合体。但是,很容易获得奇怪的行为。特别是,有了这些定义cimportnumpyasnpimportnumpyasnpnp.import_array()cdefexternfrom"complex.h":passcdef:np.complex128_tva

python - 用 cython 简单包装 C 代码

我有许多C函数,我想从python调用它们。cython似乎是要走的路,但我真的找不到一个例子来说明这是如何完成的。我的C函数如下所示:voidcalculate_daily(char*db_name,intgrid_id,intyear,double*dtmp,double*dtmn,double*dtmx,double*dprec,double*ddtr,double*dayl,double*dpet,double*dpar);我要做的就是指定前三个参数(一个字符串和两个整数),并恢复8个numpy数组(或python列表。所有double组都有N个元素)。我的代码假定指针指向已分

python - ImportError:没有名为 Cython.Distutils 的模块

我在尝试使用其setup.py文件安装Python库zenlib时遇到了一个奇怪的问题。当我运行setup.py文件时,我得到一个导入错误,说ImportError:NomodulenamedCython.Distutils`但我确实有这样的模块,我可以在python命令行中导入它而没​​有任何麻烦。为什么我会收到此导入错误?我认为问题可能与我使用EnthoughtPythonDistribution的事实有关。,我预先安装了它,而不是使用Ubuntu12.04附带的Python2.7。更多背景:这正是我尝试运行setup.py时得到的结果:enwe101@enwe101-PCL:~/

python - 使用 LAPACK 分发基于 Cython 的扩展

我正在编写一个包含Cython扩展并使用LAPACK(和BLAS)的Python模块。如果需要,我愿意使用clapack或lapacke,或某种f2c或f2py解决方案。重要的是我能够在没有Python调用开销的情况下从Cython调用lapack和blas例程。我找到了一个例子here.但是,该示例取决于SAGE。我希望我的模块可以在不安装SAGE的情况下安装,因为我的用户不太可能想要或不需要SAGE做其他任何事情。我的用户可能安装了numpy、scipy、pandas和scikitlearn等软件包,因此这些都是合理的依赖项。要使用的最佳接口(interface)组合是什么,最小的

python - 用 cython 和 mingw 编译产生 gcc : error: unrecognized command line option '-mno-cygwin'

我正在尝试使用mingw(64位)在win764位中使用cython编译python扩展。我正在使用Python2.6(ActivePython2.6.6)和足够的distutils.cfg文件(将mingw设置为编译器)执行时>C:\Python26\programas\Cython>pythonsetup.pybuild_ext--inplace我收到一条错误消息,说gcc没有-mno-cygwin选项:>C:\Python26\programas\Cython>pythonsetup.pybuild_ext--inplacerunningbuild_extskipping'hel

python - 我应该如何构建包含 Cython 代码的 Python 包

我想制作一个Python包,其中包含一些Cython代码。我的Cython代码运行良好。但是,现在我想知道如何最好地打包它。对于大多数只想安装软件包的人,我想包含Cython创建的.c文件,并安排setup.py进行编译生成模块。那么用户不需要安装Cython来安装包。但是对于可能想要修改包的人,我还想提供Cython.pyx文件,并且以某种方式还允许setup.py使用Cython构建它们(因此那些用户将需要安装Cython)。我应该如何构建包中的文件以适应这两种情况?Cythondocumentationgivesalittleguidance.但它没有说明如何制作一个处理有/无C

c++ - 在 Cython 中做列表/字典的惯用方式?

我的问题:我发现使用STL映射和vector使用原始C++处理大型数据集通常比使用Cython快得多(并且内存占用更少)。我认为这种速度损失的一部分是由于使用了Python列表和字典,并且可能有一些技巧可以在Cython中使用较少的数据结构。例如,此页面(http://wiki.cython.org/tutorials/numpy)展示了如何通过预定义ND数组的大小和类型在Cython中非常快速地制作numpy数组。问题:有没有办法用列表/字典做类似的事情,例如通过大致说明您希望其中包含多少个元素或(键,值)对?也就是说,有没有一种惯用的方式将列表/字典转换为Cython中的(快速)数

c++ - gsl::not_null<T*> 与 std::reference_wrapper<T> 与 T&

C++CoreGuidelines最近提出了(恭喜!),我很担心gsl::not_null类型。如I.12:Declareapointerthatmustnotbenullasnot_null中所述:Tohelpavoiddereferencingnullptrerrors.Toimproveperformancebyavoidingredundantchecksfornullptr....Bystatingtheintentinsource,implementersandtoolscanprovidebetterdiagnostics,suchasfindingsomeclasses

python - 扩展 python - swig,而不是 swig 或 Cython

我在我的python代码中发现了瓶颈,尝试了Psycho等。然后决定编写一个c/c++扩展来提高性能。在swig的帮助下,您几乎不需要关心参数等。一切正常。现在我的问题是:swig创建了一个相当大的py文件,它在调用实际的.pyd或.so代码之前做了很多“检查”和“PySwigObject”。如果您手写这个文件或让swig来做,你们中的任何人是否有任何经验是否可以获得更多的性能。 最佳答案 如果您不打算使用swig为其他语言生成绑定(bind),则应该考虑Boost.Python。如果你有很多函数和类要绑定(bind),Py++是一

c++ - gsl 库中的 span 和 array_view 有什么区别?

在最近的几次session演讲中,我听到BjarneStroustrup和其他人提到了C++的新编码指南以及一些支持它们的类型。具体来说,我记得theexampleofspaninsteadof(T*p,intn)asaparametertoafunction(谈话开始时间约为32:00);但我也记得使用array_view的建议.它们是两种选择但相同的概念吗?还是我混淆了事情,它们实际上并没有那么相关?我似乎找不到任何关于它们应该是什么的权威定义。 最佳答案 我们与libraryworkinggroup中的人交谈过在standar